package com.lifang.framework.beans.factory.config;

import com.lifang.framework.beans.factory.BeanFactory;
import com.lifang.framework.core.convert.ConversionService;
import com.lifang.framework.util.StringValueResolver;

/**
 * 可列出的bean工厂对象
 */
public interface ConfigurableBeanFactory extends BeanFactory, SingletonBeanRegistry {

    /**
     * 单例模型
     */
    String SCOPE_SINGLETON = "singleton";

    /**
     * 多例模型
     */
    String SCOPE_PROTOTYPE = "prototype";

    /**
     * 添加bean执行器
     */
    void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);

    /**
     * 添加值解析器
     */
    void addEmbeddedValueResolver(StringValueResolver valueResolver);

    /**
     * 移除值解析器
     */
    String resolveEmbeddedValue(String value);

    /**
     * 设置类型转换器
     */
    void setConversionService(ConversionService conversionService);

    /**
     * 返回关联的 ConversionService 类型转换服务
     */
    ConversionService getConversionService();

}
